
package 课堂实践;



//*******************************************************************
//  MagazineList.java       Author: Lewis/Loftus
//
//  Represents a collection of magazines.
//*******************************************************************

public class MagazineList
{
    private MagazineNode list;

    //----------------------------------------------------------------
    //  Sets up an initially empty list of magazines.
    //----------------------------------------------------------------
    public MagazineList()
    {
        list = null;
    }

    //----------------------------------------------------------------
    //  Creates a new MagazineNode object and adds it to the end of
    //  the linked list.
    //----------------------------------------------------------------
    public void add(Magazine mag)
    {
        MagazineNode node = new MagazineNode(mag);
        MagazineNode current;

        if (list == null)
            list = node;
        else
        {
            current = list;
            while (current.next != null)
                current = current.next;
            current.next = node;
        }
    }

    public void insert(int index, Magazine newMagazine)//在index的位置插入新节点newMagazine
    {
        MagazineNode magazineNode = new MagazineNode(newMagazine);
        MagazineNode Node=list;
        for (int i=0;i<index-2;i++){
            Node=Node.next;
        }
        magazineNode.next=Node.next;Node.next=magazineNode;
    }

    public void delete(int index)//删除节点delNode
    {
        MagazineNode del =null;
        MagazineNode current = null;
        if (index==0)
        {
            del =list;
            list=list.next.next;
        }

        else
        {
            MagazineNode dell=list;
            int n=0;
            while (dell!=null&&n<index-2){
                dell=dell.next;
                n++;
            }
            dell.next=dell.next.next;
        }



    }
    //----------------------------------------------------------------
    //  Returns this list of magazines as a string.
    //----------------------------------------------------------------
    public String toString()
    {
        String result = "";

        MagazineNode current = list;

        while (current != null)
        {
            result += current.magazine + "\n";
            current = current.next;
        }

        return result;
    }

    //*****************************************************************
    //  An inner class that represents a node in the magazine list.
    //  The public variables are accessed by the MagazineList class.
    //*****************************************************************
    private class MagazineNode
    {
        public Magazine magazine;
        public MagazineNode next;

        //--------------------------------------------------------------
        //  Sets up the node
        //--------------------------------------------------------------
        public MagazineNode(Magazine mag)
        {
            magazine = mag;
            next = null;
        }
    }





}
